package org.fixies.testcase.annotation;

import org.fixies.spreadsheet.Unit;
import org.fixies.spreadsheet.converter.DataSetConverter;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Excel小表からフィールドの値を取得する為のアノテーション<br/>
 *
 * @author Kawasaki
 * @version 1.0
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FromDataSet {

    /**
     * 小表のID<br/>
     * 指定しない場合は、フィールド名を使用する。
     *
     * @return 小表のID
     */
    String id() default "";

    /**
     * 変換クラス<br/>
     * 指定しない場合は、登録済の変換クラスを使用する。
     *
     * @return 変換クラス
     */
    Class<? extends DataSetConverter<?>> converter() default NullDataSetConverter.class;


//    public static final Class<NullDataSetConverter> DEFAULT_CONVERTER_CLASS = NullDataSetConverter.class;    

    /**
     * nullに変換する変換クラス
     *
     * @author Kawasaki
     * @version 1.0
     */
    public static class NullDataSetConverter implements DataSetConverter<Object> {

        public Object convert() {
            return null;
        }

        @Override
        public void setDataSet(Unit unit) {
        }

    }
}
